IAR3.11.1 搭建 STM8S003 模板工程 |
您所在的位置:网站首页 › 1260 v311芯片 › IAR3.11.1 搭建 STM8S003 模板工程 |
前言
头一次搭建STM8的工程,中间有一些错误,记录一下。 实验工程可以在STM8S003板子上单步的没有业务逻辑的工程模板下载点: IAR3111_STM8S003_project_template.zip 实验实验材料: IAR for STM8 3.11.1, 这个从买开发板的店主那要就行,人家都给。不过有的家是新版,有的家是旧版。 STM8固件库 en.stsw-stm8069.zip, 官方下载地址 STSW-STM8069(STM8S/A Standard peripheral library) 新建工作区
将 en.stsw-stm8069.zip 解压,将里面的 STM8S_StdPeriph_Lib\Libraries\STM8S_StdPeriph_Driver 目录拷贝到本工程中。
MCU选择有2处: 根据自己MCU型号,这里我要向IAR环境中加入宏 STM8S003 包含在工程中,但是被排除在编译之外的文件图标变灰了,如下: 将不存在的设备对应的实现都排除后,程序编译过了,有1个警告在STM8S固件库中。 这个不是错误,是IAR的bug. 这时,可以连上自己的开发板(要保证STLINK和自己板子的SWIM4线接口没连错,用STVP可以烧录程序),然后再用IAR看看能否在自己选的MCU上单步程序。 STLINK的SWIM连接4线管脚如下: 前面选STLINK仿真器时,IAR模式就是调试开始后,中断在main函数,所以不用自己预先下断点。 后续的活就简单了,纯软件的任务, 照着STM8A/S固件库的单个知识点的例程,迁移到自己工程,来实现自己板子的功能。 备注用的是和谐板的标准板授权,IAR在载入工程后,会自动弹出要解压IAR库的源代码的对话框,解压因为没有License, 会解压失败,挺唬人的。 当IAR弹出提示框,要解压IAR库的源码时,选择否,勾选不再提示,以后就不会在载入工程后,有提示框出现。 做点和板子相关的验证实验刚才写工作日志给领导时,想起来,还是要整点和板子相关的内容,领导不懂技术,要让他看到工作成果,板子上有个红色的指示灯,从STM8A/S固件库例程中,将GPIO例程迁移过来,那个指示灯可以一亮一灭的,拍了个视频,放在日志后面给领导秀了一下进度。 ST固件库做的真是优秀,不同MCU固件库软件编程都差不多,只看代码,不容易搞清,到底在操作哪种MCU. #include "stm8s.h" // 指示灯 PD3 #define LED_GPIO_PORT (GPIOD) #define LED_GPIO_PIN (GPIO_PIN_3) void Delay(uint16_t nCount); int main( void ) { int i = 0; // pin的初始状态 // GPIO_MODE_OUT_PP_LOW_SLOW // GPIO_MODE_OUT_OD_HIZ_SLOW // 等初始状态为灭 GPIO_Init(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PIN, GPIO_MODE_OUT_OD_HIZ_SLOW); do { i++; /* Toggles LEDs */ // 翻转灯状态 // GPIO_WriteReverse(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PIN); // 点灯 GPIO_WriteLow(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PIN); Delay(0xFFFF); // 不精确延时 // 灭灯 GPIO_WriteHigh(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PIN); Delay(0xFFFF); // 不精确延时 } while (1); // return 0; } /** * @brief Delay * @param nCount * @retval None */ void Delay(uint16_t nCount) { /* Decrement nCount value */ while (nCount != 0) { nCount--; } } #ifdef USE_FULL_ASSERT /** * @brief Reports the name of the source file and the source line number * where the assert_param error has occurred. * @param file: pointer to the source file name * @param line: assert_param error line source number * @retval None */ void assert_failed(uint8_t* file, uint32_t line) { /* User can add his own implementation to report the file name and line number, ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */ /* Infinite loop */ while (1) { } } #endif |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |